import { transformSync } from '@babel/core'
import presetEnv from '@babel/preset-env'

import fs from 'node:fs'

let txt = fs.readFileSync('./src/01.js', 'utf-8')

// console.log(txt);

let a = 3

if (a === 1) {
  // 没有设置 babel的预设，代码原封不动的返回，下面的 result.code 就是原始代码

  let result = transformSync(txt)

  console.log('---------babel转换后的结果------------');
  console.log();
  console.log(result.code);
}


if (a === 2) {
  // 这里无论是导入 @babel/preset-env 包，还是直接指定一个字符串，都是可以转换的
  let result = transformSync(txt, {
    // presets: [presetEnv]
    presets: ['@babel/preset-env']
  })

  /**
   * 转换出来的结果看到
   * let ---> var
   * 箭头函数转成了 普通的 函数表达式
   *
   * Promise 和 Object.assign 等没有转换
   *
   */
  console.log(result.code);
}

if (a === 3) {
  let result = transformSync(txt, {
    presets: [
      [
        presetEnv,
        {
          useBuiltIns: 'usage',// 新特性就会按需引入 polyfills
          corejs: 3
        }
      ]
    ]
  })
  // 将ES6 转成了 ES5

  /**
   * 转换出来的结果可以看到
   *
   * 引入了4个 core-js的包，对应源代码里面的3个特性  Pormise, Object.assign, filter方法
   *
   * require("core-js/modules/es.array.filter.js");
    require("core-js/modules/es.object.to-string.js");
    require("core-js/modules/es.promise.js");
    require("core-js/modules/es.object.assign.js");
   *
   */
  console.log(result.code);

}